首先定义一个学生类;
有性别、年龄和名字,私有化,有get、set方法、重写toString方法
手动抛出异常thorw new Exception(String);(匿名对象调用Exception方法)
String的内容用public String getMessage()方法调用输出
private int age;
private String gender;
private String name;
public String getGender() {
return gender;
}
public void setGender(String gender) throws Exception{
if(gender.equals("男")||gender.equals("女")) {
this.gender = gender;
}else {
//手动抛出异常,让调用者去解决
throw new Exception("性别输入错误!");//message
}
}
public int getAge() {
return age;
}
public void setAge(int age) throws Exception{
if(age>=0&&age<=120) {
this.age=age;
}else {
//手动抛出异常,让调用者去解决
throw new Exception("年龄只能在0-120之间");//message
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name= name;
}
@Override
public String toString() {
return "Student [age=" + age + ", gender=" + gender + ", name=" + name + "]";
}
测试学生类:
public static void main(String[] args) {
Scanner taylor=new Scanner(System.in);
//Student类中有个异常抛出,在main方法中调用时需要用try--catch进行解决
int age;
String gender,name;
Student s1=new Student();
System.out.print("输入性别:");
gender=taylor.nextLine();
System.out.print("输入年龄:");
age=taylor.nextInt();
s1.setName("老铁");
try {
s1.setAge(age);
} catch (Exception e) {
System.err.println(e.getMessage());
}
try {
s1.setGender(gender);
} catch (Exception e) {
System.err.println(e.getMessage());
}
System.out.println(s1.toString());
}
----------------------------------------分割线---------------------------------------
自定义异常:
先创建两个类,继承Exception方法
方法1:
public class GenderException extends Exception{
public GenderException(String msg) {
//构造方法,调用父类方法
super(msg);
//相当于new Exception("性别只能是男或女");
}
}
方法2:
public class AgeException extends Exception{
public AgeException(String msg) {
super(msg);
//相当于new Exception("年龄只能在0-120之间");
}
}
定义一个学生类:
方法上用throws,方法内用throw
public class Student1 {
private int age;
private String gender;
private String name;
public String getGender() {
return gender;
}
public void setGender(String gender) throws GenderException{
if(gender.equals("男")||gender.equals("女")) {
this.gender = gender;
}else {
//自定义一个异常(GenderException),手动抛出,让调用者去解决
throw new GenderException("只能输入男或者女");//message
}
}
public int getAge() {
return age;
}
public void setAge(int age) throws AgeException{
if(age>=0&&age<=120) {
this.age=age;
}else {
//自定义一个异常(AgeException),手动抛出,让调用者去解决
throw new AgeException("年龄只能在0-120之间");//message
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name= name;
}
@Override
public String toString() {
return "Student [age=" + age + ", gender=" + gender + ", name=" + name + "]";
}
测试学生类:
public static void main(String[] args) {
Scanner taylor=new Scanner(System.in);
Student1 s1=new Student1();
int age;
String gender;
System.out.print("年龄:");
age=taylor.nextInt();
System.out.print("性别:");
gender=taylor.nextLine();
s1.setName("隔壁老王");
try {
s1.setAge(age);
}catch(AgeException a) {
System.err.println(a.getMessage());
}
try {
s1.setGender(gender);
}catch(GenderException a) {
System.err.println(a.getMessage());
}
System.out.println(s1.toString());
taylor.close();
}